/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prjtgl.controler.membre;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.zkoss.bind.BindUtils;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.*;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.*;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.Membre;
import prjtgl.metier.comptes.profil_utilisateur.DomaineExpertise;
import prjtgl.metier.comptes.profil_utilisateur.Profil;
/**
 *
 * @author Adrien
 */
public class Inscription  extends SelectorComposer {
    @Wire
    Textbox name,prenom,email,mdp_1,mdp_2;
    
    @Wire
    Groupbox expertise;
    
    @Wire
    Listbox domaineExpertise,profil,disponibilite;
    
    @Wire
    Button retrieve;
    
    @Listen("onClick=#retrieve")
    public void createMembre()
    {
          
        Application ap = Application.getInstance();
        if (ap.rechercherUtilisateur(email.getValue()) != null) { showNotify("Adresse e-mail déjà utilisée !", retrieve);} 
        else if (!mdp_1.getValue().equals(mdp_2.getValue())) { showNotify("Mots de Passe et Confirmation de mot de passe sont différents !", mdp_1);} 
        else 
        {
            showNotify("Création réussie", retrieve);
          
          
            // SUCCESS
            Membre membre = new Membre();
            membre.setNom(name.getValue());
            membre.setPrenom(prenom.getValue());
            membre.setEmail(email.getValue());
            membre.setMotDePasse(mdp_1.getValue());
            membre.setRole("membre");
            Profil membre_profil = ap.rechercherProfil( profil.getSelectedItem().getLabel());
            membre.setProfil(membre_profil);
           

            if ( disponibilite.getSelectedItem().getLabel().equals("En prestation"))  membre.setEstDisponible(false);
            else  membre.setEstDisponible(true);

            Set<Listitem> set =  domaineExpertise.getSelectedItems();
            Iterator i = set.iterator();
            List<DomaineExpertise> domaineExpertiseLst = new ArrayList<DomaineExpertise>();
          
            while ( i.hasNext())
            {         
                Listitem li = (Listitem) i.next();
                domaineExpertiseLst.add(ap.rechercherDomainesExpertise(li.getLabel()));
            }
            membre.setDomaines(domaineExpertiseLst);
            
            ap.creerMembre(membre);
             
           
           Map<String, Object> args = new HashMap();

           args.put("content", "connexion.zul");
           BindUtils.postGlobalCommand(null, null, "changePage", args);
         
            
        }
       
        
    }
    
    private void showNotify(String msg, Component ref)
    {
        Clients.showNotification(msg, "info", ref, "end_center", 4000);
    }
}
